package com.pai4j.common.enums.jianlibot;
import com.pai4j.common.exception.BusinessException;
import lombok.AllArgsConstructor;
import lombok.Getter;
import org.apache.commons.lang3.StringUtils;
import org.springframework.util.Assert;

import java.util.Arrays;
import java.util.List;

/**
 *  简历模板枚举类，用于定义简历的不同布局样式和相关信息
 *
 * @author: CYM-pai
 * @date: 2025/05/04 20:05
 **/
@Getter
@AllArgsConstructor
public enum ResumeTemplateEnum {

    /**
     * 上下布局的简历模板，适用于社招，针对程序员、技术人员、科研人员
     * 提供模板代码、分数、风格描述、类型、适用职业和封面图片URL
     */
    R001("R001", 1, "上下布局", "社招", "程序员,技术人员,科研人员", "https://coderutil.oss-cn-beijing.aliyuncs.com/jianlibot/cover/018b4c774c194d229c73103633c5e5ba.png"),
    
    /**
     * 左右布局的简历模板，适用于社招，针对程序员、技术人员、科研人员
     * 提供模板代码、分数、风格描述、类型、适用职业和封面图片URL
     */
    R002("R002", 2, "左右布局", "社招", "程序员,技术人员,科研人员", "https://coderutil.oss-cn-beijing.aliyuncs.com/bbs-image/file_ef5aef244a564c6bb32672115f0bc98a.png");

    /**
     * 模板代码，用于唯一标识一个简历模板
     */
    private String code;
    
    /**
     * 模板评分，用于表示模板的受欢迎程度或推荐程度
     */
    private int score;
    
    /**
     * 模板风格描述，如上下布局、左右布局等
     */
    private String style;
    
    /**
     * 模板类型，如社招、校招等
     */
    private String type;
    
    /**
     * 适用职业，表示该模板适合的职业类型
     */
    private String occupation;
    
    /**
     * 封面图片URL，用于展示模板的封面图片
     */
    private String cover;

    /**
     * 验证给定的模板代码是否有效
     *
     * @param code 待验证的模板代码
     * @throws BusinessException 如果模板不存在或代码为空，则抛出业务异常
     */
    public static void   validate(String code) {
        Assert.isTrue(StringUtils.isNotBlank(code), "模版为空!");
        for (ResumeTemplateEnum template : ResumeTemplateEnum.values()) {
            if (template.code.equals(code)) {
                return;
            }
        }
        throw new BusinessException("模版不存在！");
    }

    /**
     * 根据模板代码获取对应的封面图片URL
     *
     * @param code 模板代码
     * @return 封面图片URL
     * @throws BusinessException 如果模板不存在或代码为空，则抛出业务异常
     */
    public static String getCover(String code) {
        Assert.isTrue(StringUtils.isNotBlank(code), "模版为空!");
        for (ResumeTemplateEnum template : ResumeTemplateEnum.values()) {
            if (template.code.equals(code)) {
                return template.getCover();
            }
        }
        throw new BusinessException("模版不存在！");
    }

    /**
     * 获取适用职业列表，将职业字符串按逗号分割为列表
     *
     * @return 职业列表
     */
    public List<String> getOccupationList() {
        return Arrays.asList(this.occupation.split(","));
    }
}

